// 获取App信息
const app = getApp()
// 获取数据库信息
const db = wx.cloud.database()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userPhoto: "/images/user/user_unlogin.png",
    nickName: "boco",
    logged: false,
    disabled: true,  // 默认不可用
    id: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // 用户自动登录
    this.userAutoLogin();
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.setData({
      userPhoto: app.userInfo.userPhoto,
      nickName: app.userInfo.nickName,
      id: app.userInfo._id
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  bindGetUserInfo(ev) {
    let userInfo = ev.detail.userInfo;
    if (!this.data.logged && userInfo) {
      // 用户未登录 并且 用户信息不为空时，将用户信息插入user表中
      db.collection('users').add({
        data: {
          userPhoto: userInfo.avatarUrl,
          nickName: userInfo.nickName,
          signature: '',
          phoneNumber: '',
          weixinNumber: '',
          isLocation: true,
          links: 0,
          time: new Date(),
          isLocation: true,
          longitude: this.longitude,
          latitude: this.latitude,
          location: db.Geo.Point(this.longitude, this.latitude),
          friendList: []
        }
      }).then((res) => {
        // 打印插入结果
        console.log(res);
        // 获取刚插入的用户信息
        db.collection('users').doc(res._id).get().then((res) => {
          app.userInfo = Object.assign(app.userInfo, res.data);
          this.setData({
            userPhoto: app.userInfo.userPhoto,
            nickName: app.userInfo.nickName,
            logged: true,
            id: app.userInfo._id
          });
        });
      });
    }

  },

  userAutoLogin() {
    // 调用login云函数
    wx.cloud.callFunction({
      name: 'login',
      data: {}
    }).then((res) => {
      // 通过openid获取已登录用户信息
      db.collection('users').where({
        _openid: res.result.openid
      }).get().then((res) => {
        if (res.data.length) {
          // 若返回的数据长度大于0
          app.userInfo = Object.assign(app.userInfo, res.data[0]);
          this.setData({
            userPhoto: app.userInfo.userPhoto,
            nickName: app.userInfo.nickName,
            logged: true,
            id: app.userInfo._id
          });
          //监听消息
          this.getMessage();
        } else {
          // 若返回的长度小于0, 则微信登录按钮可以使用
          this.setData({
            disabled: false
          });
        }
      });
    });
    
  },

  //监听消息的改变
  getMessage() {
    //根据userId定位消息
    db.collection('message').where({
      userId: app.userInfo._id
    }).watch({
      onChange: function (snapshot) {
        //监听docChanges是否有值
        if (snapshot.docChanges.length) {
          let list = snapshot.docChanges[0].doc.list;
          if (list.length) {
            //显示消息Tab右上角的红点
            wx.showTabBarRedDot({
              index: 2
            });
            app.userMessage = list;
          } else {
            //隐藏消息Tab右上角的红点
            wx.hideTabBarRedDot({
              index: 2
            })
            app.userMessage = [];
          }
        }
      },
      onError: function (err) {
        console.error('the watch closed because of error', err)
      }
    });
  },

  getLocation() {
    wx.getLocation({
      type: 'gcj02',
      success: (res) => {
        this.latitude = res.latitude
        this.longitude = res.longitude
      }
    })
  }
  
})